package com.singfan.core.service;

import com.singfan.core.dao.database.model.*;

import java.util.Date;
import java.util.LinkedHashMap;
import java.util.List;

/**
 * Author: hansonghe
 * Date: 2015-08-27 14:58
 * Desc:
 */
public interface IOrderService {
    String APPOINTMENT_CONFLICT = "APPOINTMENT_CONFLICT";

    String createOrder(Customer customer, Shop shop, Barber barber, int orderType, BarberHairstyle barberHairstyle, List<ShopHairService> shopHairServiceList, int payChannelType, long couponId, int realOriginalPriceCount, int price, int appointmentDay, int appointmentClock, String clientIp);

    void updateOrderPaied(String payChannelSerialNumber);

    List<Orders> findCustomerOrderList(long customerId, int orderStatusType, int pageIndex, int pageSize);

    OrderPayChannelInfo findOrderPayChannelInfo(long orderId);

    void commentOrder(long orderId, long customerId, int serviceLevel, int techLevel, int environmentLevel, String commentContent, List<String> commentImgUrl);

    int barberOrderCount(long barberId);

    int barberUnfinishOrderCount(long barberId);

    List<Orders> findBarberOrderList(long barberId, int orderStatusType, int pageIndex, int pageSize);

    List<Long> findExpiredOrder(Date limitCreateTime);

    void updateOrderStatus(long orderId, int status);

    LinkedHashMap<Integer, Integer> findBarberIncomeTotalByMonth(long barberId);

    int findBarberIncomeTotal(long barberId);

    List<Orders> findBarberOrderDetailList(long barberId, int orderFilterType, int pageIndex, int pageSize);

    Orders findOrdersById(long orderId);

    void updateOrderServiced(long orderId);

    int findShopOneDayIncome(long shopId, int dayTime);

    int findShopOneDayOrderCount(long shopId, int dayTime);

    List<Orders> findShopOneDayOrderList(long shopId, int dayTime);

    int findShopOneMonthIncome(long shopId, int monthTime);

    int findShopOneMonthOrderCount(long shopId, int monthTime);

    Orders findOrdersBySecurityCode(long shopId, String securityCode);

    List<Orders> findShopOrderDetailList(long shopId, int orderFilterType, int pageIndex, int pageSize);

    List<Orders> findCustomerOrderList(String customerPhone);

    List<Orders> findOneMonthOrdersList(int month, long shopId);
}
